// 用户管理列表的数据模拟
import Mock from 'mockjs';

// get请求从config.url获取参数, post从config.body中获取参数

function param2Obj (url) {
    // 获取get请求的param值 - 可能是这样,?name=stale&car=saab
    const search = url.split('?')[1];
    if (!search) {
        return {};
    }
    // 可以将JSON格式的字符串转换为JavaScript对象,如果json格式错误,则不解析
    return JSON.parse(
        // decodeURIComponent可以对 encodeURIComponent() 函数编码的 URI 进行解码
        '{"' + 
        decodeURIComponent(search)
            .replace(/"/g, '\\"')
            .replace(/&/g, '","')
            .replace(/=/g, '":"') +
        '"}'
    );
}

let List = [];
const count = 200;
// 添加两百组数据
for (let i = 0; i < count; i++) {
    List.push(
        Mock.mock({
            // 随机一个唯一的id
            id: Mock.Random.guid(),
            // 随机一个中文名字
            name: Mock.Random.cname(),
            // 随机一个中国城市
            addr: Mock.mock('@county(true)'),
            // 随机一个年龄,18~60岁之间
            'age|18-60': 1,
            // 随机一个日期
            birth: Mock.Random.date(),
            // 随机0或者1的数字
            sex: Mock.Random.integer(0,1),
        })
    )
}

export default {
    // 获取数据列表 - config - 前端返回的数据
    getUserList: config => {
        const { name, page = 1, limit = 20 } = param2Obj(config.url);
        console.log(
            'name:' + name,
            'page:' + page,
            '分页大小limit:' + limit
        );
        const mockList = List.filter(user => {
            if (name && user.name.indexOf(name) === -1 && user.addr.indexOf(name) === -1) return false
                return true;
        });
        const pageList = mockList.filter((item,index) => index < limit * page && index >= limit * (page - 1));
        return {
            code: 20000,
            count: mockList.length,
            list: pageList
        };
    },
    // 增加用户
    createUser: config => {
        const { name, addr, age, birth, sex } = JSON.parse(config.body);
        console.log(JSON.parse(config.body));
        List.unshift({
            id: Mock.Random.guid(),
            name: name,
            addr: addr,
            age: age,
            birth: birth,
            sex: sex,
        });
        return {
            code: 20000,
            data: {
                message: '添加成功'
            }
        }
    },
    // 删除用户
    deleteUser: config => {
        // 前端传入的数据 - id为唯一标识
        const { id } = JSON.parse(config.body);
        if (!id) {
            return {
                code: -999,
                message: '参数不正确'
            }
        } else {
            List = List.filter( u => u.id !== id );
            return {
                code: 20000,
                message: '删除成功'
            }
        }
    },
    // 批量删除
    batchRemove: config => {
        let { ids } = param2Obj(config.url);
        ids = ids.split(',');
        List = List.filter(u => !ids.include(u.id));
        return {
            code: 20000,
            data: {
                message: '批量删除成功'
            }
        }
    },
    // 更改用户信息
    updateUser: config => {
        const { id, name, addr, age, birth, sex } = JSON.parse(config.body);
        const sex_num = parseInt(sex);
        List.some(u => {
            if (u.id === id) {
                u.name = name;
                u.addr = addr;
                u.age = age;
                u.birth = birth;
                u.sex = sex_num;
                return true;
            }
        });
        return {
            code:20000,
            data: {
                maessage: '编辑成功'
            }
        }
    }
}